#include <stdio.h>
#include <stdlib.h>
#include <string.h>


void a_1()
{
  /*4005fc:	a9bd7bfd 	stp	x29, x30, [sp, #-48]!
  400600:	910003fd 	mov	x29, sp  
  400604:	d2800020 	mov	x0, #0x1                   	// #1
  400608:	f9000fa0 	str	x0, [x29, #24]*/
	long j = 1;

  /*40060c:	52800040 	mov	w0, #0x2                   	// #2
  400610:	b90017a0 	str	w0, [x29, #20]*/
	int i = 2;

  /*400614:	b9002fbf 	str	wzr, [x29, #44]	// [x29+44] = 0
  400618:	b9402fa0 	ldr	w0, [x29, #44]	// w0 = 0
  40061c:	b9002ba0 	str	w0, [x29, #40]	// [x29+40] = 0
  400620:	b9402ba0 	ldr	w0, [x29, #40]	// w0 = 0
  400624:	b90027a0 	str	w0, [x29, #36]	// [x29+36] = 0
  400628:	b94027a0 	ldr	w0, [x29, #36]	// w0 = 0
  40062c:	b90023a0 	str	w0, [x29, #32]	// [x29+32] = 0*/
	int a[4];
	a[0] = a[1] = a[2] = a[3] = 0;


  /*400630:	f9400fa1 	ldr	x1, [x29, #24]	// x1 = [x29+24] = 1 
  400634:	90000000 	adrp	x0, 400000 <_init-0x480>
  400638:	91266000 	add	x0, x0, #0x998
  40063c:	97ffffad 	bl	4004f0 <printf@plt> */
	printf("%ld\n", j);

  /*400640:	910063a1 	add	x1, x29, #0x18	
  400644:	90000000 	adrp	x0, 400000 <_init-0x480>
  400648:	91266000 	add	x0, x0, #0x998
  40064c:	97ffffa9 	bl	4004f0 <printf@plt>*/
	printf("%p\n", &j);

  /*400650:	f9400fa1 	ldr	x1, [x29, #24]	// x1 = j = 1
  400654:	f9400fa0 	ldr	x0, [x29, #24]	// x0 = j = 1
  400658:	91001002 	add	x2, x0, #0x4	// x2 = 1 + 0x4 = 5
  40065c:	f9400fa0 	ldr	x0, [x29, #24]	// x0 = 1
  400660:	91002003 	add	x3, x0, #0x8	// x3 = 1+8 = 9
  400664:	f9400fa0 	ldr	x0, [x29, #24]	// x0 = 1
  400668:	91003004 	add	x4, x0, #0xc	// x4 = 14
  40066c:	f9400fa0 	ldr	x0, [x29, #24]	// x0 = 1
  400670:	91004005 	add	x5, x0, #0x10	// x5 = 1 + 0x10 = 17
  400674:	f9400fa0 	ldr	x0, [x29, #24]	// [x29+24] = 1
  400678:	91005006 	add	x6, x0, #0x14	// x6 = 1+0x14 = 21
  40067c:	90000000 	adrp	x0, 400000 <_init-0x480>
  400680:	91268000 	add	x0, x0, #0x9a0
  400684:	97ffff9b 	bl	4004f0 <printf@plt>*/
	printf("%ld %ld %ld %ld %ld %ld\n", j, j+0x4, j+8, j+12, j+16, j+20);

  /*400688:	f9400fa0 	ldr	x0, [x29, #24]	// x0 = 1
  40068c:	b90023a0 	str	w0, [x29, #32]	// [x29+32] = 1*/
	a[0] = j;

  /*400690:	f9400fa0 	ldr	x0, [x29, #24]	// x0 = 1
  400694:	91001000 	add	x0, x0, #0x4	// x0 = 1+0x4 = 5
  400698:	b90027a0 	str	w0, [x29, #36]	// [x29+36] = 5*/
	a[1] = j + 0x4;

  /*40069c:	f9400fa0 	ldr	x0, [x29, #24]	// x0 = 1
  4006a0:	91002000 	add	x0, x0, #0x8	// x0 = 1 + 8
  4006a4:	b9002ba0 	str	w0, [x29, #40]	// [x29+40] = 9*/
	a[2] = j + 0x8;
  
  /*4006a8:	f9400fa0 	ldr	x0, [x29, #24]	// x0 = 1
  4006ac:	91003000 	add	x0, x0, #0xc	// x0 = 1 + 0xc
  4006b0:	b9002fa0 	str	w0, [x29, #44]	// [x29+44] = 0xd*/
	a[3] = j + 0xc;
  
  /*4006b4:	90000000 	adrp	x0, 400000 <_init-0x480>
  4006b8:	91270000 	add	x0, x0, #0x9c0
  4006bc:	b9402fa4 	ldr	w4, [x29, #44]	// w2 = 0xd
  4006c0:	b9402ba3 	ldr	w3, [x29, #40]	// w3 = 9
  4006c4:	b94027a2 	ldr	w2, [x29, #36]	// w2 = 5
  4006c8:	b94023a1 	ldr	w1, [x29, #32]	// w1 = 1
  4006cc:	97ffff89 	bl	4004f0 <printf@plt>*/
	printf("%d %d %d %d\n", a[0], a[1], a[2], a[3]);

  /*4006d0:	910053a0 	add	x0, x29, #0x14	// x0 = x29+20
  4006d4:	f9000fa0 	str	x0, [x29, #24]	// [x29+24] = x29+20 = &i */
	j = (long)&i;
  /*4006d8:	910053a1 	add	x1, x29, #0x14	// x1 = x29+20
  4006dc:	90000000 	adrp	x0, 400000 <_init-0x480>
  4006e0:	91274000 	add	x0, x0, #0x9d0
  4006e4:	97ffff83 	bl	4004f0 <printf@plt>*/
	printf("%lx\n", (long)&i);

  /*4006e8:	f9400fa1 	ldr	x1, [x29, #24]	// x1 = &i
  4006ec:	90000000 	adrp	x0, 400000 <_init-0x480>
  4006f0:	91266000 	add	x0, x0, #0x998
  4006f4:	97ffff7f 	bl	4004f0 <printf@plt>*/
	printf("%lx\n", j);

  /*4006f8:	f9400fa0 	ldr	x0, [x29, #24]	// x0 = &i
  4006fc:	b9400001 	ldr	w1, [x0]		// w1 = 2
  400700:	90000000 	adrp	x0, 400000 <_init-0x480>
  400704:	91266000 	add	x0, x0, #0x998
  400708:	97ffff7a 	bl	4004f0 <printf@plt>*/
	printf("%d\n", *(int*)j);

  /*40070c:	d503201f 	nop
  400710:	a8c37bfd 	ldp	x29, x30, [sp], #48
  400714:	d65f03c0 	ret*/
}

void a_0()
{
  /*400718:	a9bd7bfd 	stp	x29, x30, [sp, #-48]!
  40071c:	910003fd 	mov	x29, sp
  400720:	f9000fbf 	str	xzr, [x29, #24]
  400724:	b9002fbf 	str	wzr, [x29, #44]*/
	long j = 0;
	int i = 0;

  /*400728:	b9402fa0 	ldr	w0, [x29, #44]
  40072c:	b9002ba0 	str	w0, [x29, #40]
  400730:	b9402ba0 	ldr	w0, [x29, #40]
  400734:	b90027a0 	str	w0, [x29, #36]
  400738:	b94027a0 	ldr	w0, [x29, #36]
  40073c:	b90023a0 	str	w0, [x29, #32]*/
	int a[3];
	a[0] = a[1] = a[2] = i;

  /*400740:	f9400fa1 	ldr	x1, [x29, #24]
  400744:	90000000 	adrp	x0, 400000 <_init-0x480>
  400748:	91266000 	add	x0, x0, #0x998
  40074c:	97ffff69 	bl	4004f0 <printf@plt>*/
	printf("%ld\n", j);

  /*400750:	910063a1 	add	x1, x29, #0x18
  400754:	90000000 	adrp	x0, 400000 <_init-0x480>
  400758:	91266000 	add	x0, x0, #0x998
  40075c:	97ffff65 	bl	4004f0 <printf@plt>*/
	printf("%ld\n", (long)&j);

  /*400760:	f9400fa1 	ldr	x1, [x29, #24]	// x1 = 0
  400764:	f9400fa0 	ldr	x0, [x29, #24]	// x0 = 0
  400768:	91001002 	add	x2, x0, #0x4	// x2 = 0+4
  40076c:	f9400fa0 	ldr	x0, [x29, #24]	// x0 = 0
  400770:	91002003 	add	x3, x0, #0x8	// x3 = 0+8
  400774:	f9400fa0 	ldr	x0, [x29, #24]	// x0 = 0
  400778:	91003004 	add	x4, x0, #0xc	// x4 = 0+c
  40077c:	f9400fa0 	ldr	x0, [x29, #24]	// x0 = 0
  400780:	91004005 	add	x5, x0, #0x10	// x5 = 0+0x10
  400784:	f9400fa0 	ldr	x0, [x29, #24]	// x0 = 0
  400788:	91005006 	add	x6, x0, #0x14	// x6 = 0+0x14
  40078c:	90000000 	adrp	x0, 400000 <_init-0x480>
  400790:	91268000 	add	x0, x0, #0x9a0
  400794:	97ffff57 	bl	4004f0 <printf@plt>*/
	printf("%ld %ld %ld %ld %ld %ld\n", j, j+4, j+8, j+12, j+16, j+20);

  /*400798:	f9400fa0 	ldr	x0, [x29, #24]	// x0 = 0
  40079c:	b90023a0 	str	w0, [x29, #32]	// [x29+32] = 0*/
	a[0] = j;
  /*4007a0:	f9400fa0 	ldr	x0, [x29, #24]	// x0 = 0
  4007a4:	91001000 	add	x0, x0, #0x4	// x0 = 0+4
  4007a8:	b90027a0 	str	w0, [x29, #36]	// [x29+36] = 4*/
	a[1] = j+4;

  /*4007ac:	f9400fa0 	ldr	x0, [x29, #24]	// x0 = 0
  4007b0:	91002000 	add	x0, x0, #0x8	// x0 = 0+8
  4007b4:	b9002ba0 	str	w0, [x29, #40]	// [x29+40] = 8*/
	a[2] = j+8;

  /*4007b8:	f9400fa0 	ldr	x0, [x29, #24]	// x0 = 0
  4007bc:	91003000 	add	x0, x0, #0xc	// x0 = 0+c
  4007c0:	b9002fa0 	str	w0, [x29, #44]	// [x29+44] = 12*/
	i = j+12;

  /*4007c4:	90000000 	adrp	x0, 400000 <_init-0x480>
  4007c8:	91270000 	add	x0, x0, #0x9c0
  4007cc:	b9402fa4 	ldr	w4, [x29, #44]
  4007d0:	b9402ba3 	ldr	w3, [x29, #40]
  4007d4:	b94027a2 	ldr	w2, [x29, #36]
  4007d8:	b94023a1 	ldr	w1, [x29, #32]
  4007dc:	97ffff45 	bl	4004f0 <printf@plt>*/
	printf("%d %d %d %d\n", a[0], a[1], a[2], i);
  
  /*4007e0:	d503201f 	nop
  4007e4:	a8c37bfd 	ldp	x29, x30, [sp], #48
  4007e8:	d65f03c0 	ret*/
}

void a_3()
{
  /*4007ec:	a9bd7bfd 	stp	x29, x30, [sp, #-48]!
  4007f0:	910003fd 	mov	x29, sp
  4007f4:	d2800060 	mov	x0, #0x3                   	// #3
  4007f8:	f9000fa0 	str	x0, [x29, #24]
  4007fc:	b9002fbf 	str	wzr, [x29, #44] */
	long j = 3;
	int i = 0;

  /*400800:	b9402fa0 	ldr	w0, [x29, #44]
  400804:	b9002ba0 	str	w0, [x29, #40]
  400808:	b9402ba0 	ldr	w0, [x29, #40]
  40080c:	b90027a0 	str	w0, [x29, #36]
  400810:	b94027a0 	ldr	w0, [x29, #36]
  400814:	b90023a0 	str	w0, [x29, #32] */
	int a[3];
	a[0] = a[1] = a[2] = i;

  /*400818:	f9400fa1 	ldr	x1, [x29, #24]
  40081c:	90000000 	adrp	x0, 400000 <_init-0x480>
  400820:	91266000 	add	x0, x0, #0x998
  400824:	97ffff33 	bl	4004f0 <printf@plt> */
	printf("%ld\n", j);

  /*400828:	910063a1 	add	x1, x29, #0x18
  40082c:	90000000 	adrp	x0, 400000 <_init-0x480>
  400830:	91266000 	add	x0, x0, #0x998
  400834:	97ffff2f 	bl	4004f0 <printf@plt> */
	printf("%ld\n", (long)&j);

  /*400838:	f9400fa1 	ldr	x1, [x29, #24]	// x1 = j = 3
  40083c:	f9400fa0 	ldr	x0, [x29, #24]	// x0 = j = 3
  400840:	91001002 	add	x2, x0, #0x4	// x2 = 3+0x4
  400844:	f9400fa0 	ldr	x0, [x29, #24]	// x0 = 3
  400848:	91002003 	add	x3, x0, #0x8	// x3 = 3+8
  40084c:	f9400fa0 	ldr	x0, [x29, #24]	// x0
  400850:	91003004 	add	x4, x0, #0xc	// x4 = 3+c
  400854:	f9400fa0 	ldr	x0, [x29, #24]
  400858:	91004005 	add	x5, x0, #0x10	// x5 = 3+0x10
  40085c:	f9400fa0 	ldr	x0, [x29, #24]
  400860:	91005006 	add	x6, x0, #0x14	// x6 = 3+0x14
  400864:	90000000 	adrp	x0, 400000 <_init-0x480>
  400868:	91268000 	add	x0, x0, #0x9a0
  40086c:	97ffff21 	bl	4004f0 <printf@plt> */
	printf("%ld %ld %ld %ld %ld %ld\n", j, j+4, j+8, j+12, j+16, j+20);

  /*400870:	f9400fa0 	ldr	x0, [x29, #24]	// x0 = j = 3
  400874:	b90023a0 	str	w0, [x29, #32]	// [x29+32] = 3 */
	a[0] = j;

  /*400878:	f9400fa0 	ldr	x0, [x29, #24]	// x0 = 3
  40087c:	91001000 	add	x0, x0, #0x4	// x0 = 3+4
  400880:	b90027a0 	str	w0, [x29, #36]	// [x29+36] = 3+4 */
	a[1] = j + 4;

  /*400884:	f9400fa0 	ldr	x0, [x29, #24]
  400888:	91002000 	add	x0, x0, #0x8
  40088c:	b9002ba0 	str	w0, [x29, #40]	*/
	a[2] = j + 8;

  /*400890:	f9400fa0 	ldr	x0, [x29, #24]
  400894:	91003000 	add	x0, x0, #0xc
  400898:	b9002fa0 	str	w0, [x29, #44] */
	i = j + 0xc;

  /*40089c:	90000000 	adrp	x0, 400000 <_init-0x480>
  4008a0:	91270000 	add	x0, x0, #0x9c0
  4008a4:	b9402fa4 	ldr	w4, [x29, #44]
  4008a8:	b9402ba3 	ldr	w3, [x29, #40]
  4008ac:	b94027a2 	ldr	w2, [x29, #36]
  4008b0:	b94023a1 	ldr	w1, [x29, #32]
  4008b4:	97ffff0f 	bl	4004f0 <printf@plt> */
	printf("%d %d %d %d\n", a[0], a[1], a[2], i);

  /*4008b8:	d503201f 	nop
  4008bc:	a8c37bfd 	ldp	x29, x30, [sp], #48
  4008c0:	d65f03c0 	ret*/

}

int main()
{
  /*4008c4:	a9bf7bfd 	stp	x29, x30, [sp, #-16]!
  4008c8:	910003fd 	mov	x29, sp*/
  //4008cc:	97ffff4c 	bl	4005fc <a_1>
	a_1();

  //4008d0:	97ffff92 	bl	400718 <a_0>
	a_0();

  //4008d4:	97ffffc6 	bl	4007ec <a_3>
	a_3();
  
  /*4008d8:	d503201f 	nop
  4008dc:	a8c17bfd 	ldp	x29, x30, [sp], #16
  4008e0:	d65f03c0 	ret
  4008e4:	00000000 	.inst	0x00000000 ; undefined*/

	return 0;	
}
